#ifndef _WX_DIRDLGG_H_
#define _WX_DIRDLGG_H_

class wxGenericDirCtrl;
class wxTextCtrl;
class wxTreeEvent;

// we may be included directly as well as from wx/dirdlg.h (FIXME)
extern const wxChar wxDirDialogNameStr[];
extern const wxChar wxDirSelectorPromptStr[];

#ifndef wxDD_DEFAULT_STYLE
#define wxDD_DEFAULT_STYLE      (wxDEFAULT_DIALOG_STYLE|wxRESIZE_BORDER)
#endif

#include "wx/dialog.h"

//-----------------------------------------------------------------------------
// wxGenericDirDialog
//-----------------------------------------------------------------------------

class wxGenericDirDialog : public wxDirDialogBase {
  public:
    wxGenericDirDialog() : wxDirDialogBase() { }

    wxGenericDirDialog( wxWindow* parent,
                        const wxString& title = wxDirSelectorPromptStr,
                        const wxString& defaultPath = wxEmptyString,
                        long style = wxDD_DEFAULT_STYLE,
                        const wxPoint& pos = wxDefaultPosition,
                        const wxSize& sz = wxDefaultSize,//Size(450, 550),
                        const wxString& name = wxDirDialogNameStr );

    bool Create( wxWindow* parent,
                 const wxString& title = wxDirSelectorPromptStr,
                 const wxString& defaultPath = wxEmptyString,
                 long style = wxDD_DEFAULT_STYLE,
                 const wxPoint& pos = wxDefaultPosition,
                 const wxSize& sz = wxDefaultSize,//Size(450, 550),
                 const wxString& name = wxDirDialogNameStr );

    //// Accessors
    void SetPath( const wxString& path );
    wxString GetPath() const;

    //// Overrides
    virtual int ShowModal();
    virtual void EndModal( int retCode );

    // this one is specific to wxGenericDirDialog
    wxTextCtrl* GetInputCtrl() const { return m_input; }

  protected:
    //// Event handlers
    void OnCloseWindow( wxCloseEvent& event );
    void OnOK( wxCommandEvent& event );
    void OnTreeSelected( wxTreeEvent &event );
    void OnTreeKeyDown( wxTreeEvent &event );
    void OnNew( wxCommandEvent& event );
    void OnGoHome( wxCommandEvent& event );
    void OnShowHidden( wxCommandEvent& event );

    wxGenericDirCtrl* m_dirCtrl;
    wxTextCtrl*       m_input;

    DECLARE_EVENT_TABLE()
    DECLARE_DYNAMIC_CLASS( wxGenericDirDialog )
};

#endif // _WX_DIRDLGG_H_
